<?php

declare(strict_types=1);

namespace app\subscribe;

use think\Event;
use think\facade\Log;

/**
 * 事件订阅类 日志
 */
class Record
{
    /**
     * 统一下单
     *
     * @param array $data
     */
    public function unify(array $data)
    {
        $this->json($data);
        Log::channel('record')->write($data, 'unify');
    }

    /**
     * 消息推送
     *
     * @param array $data
     */
    public function message(array $data)
    {
        $this->json($data);
        Log::channel('record')->write($data, 'message');
    }

    /**
     * 自定义订阅方式
     *
     * @param Event $event
     */
    public function subscribe(Event $event)
    {
        $event->listen('unify', [$this, 'unify']);
        $event->listen('message', [$this, 'message']);
    }

    /**
     * 将数据转为JSON字符串
     *
     * @param array $data
     */
    private function json(array &$data)
    {
        $data = json_encode($data, JSON_UNESCAPED_UNICODE);
    }
}
